package com.example.service;

import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.chat.ChatResponse;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class QianfanService {

    private List<String> messageHistory = new ArrayList<>();
    private final Qianfan qianfan;

    public QianfanService() {
        this.qianfan = new Qianfan("ALTAKbTHj6UElkuDpSd9lc8OAx", "98e09c0fac2a45d7aa721332b47c887a");
    }

    public String callWithMessage(String userPrompt, int maxTokens, String role) {
        // 根据角色获取对应的情景
        String prompt = getPromptByRole(role);

        // 构建最终提示语句，只包含当前用户输入和对应角色的情景
        String finalPrompt = "用户说：" + userPrompt + "\n" + prompt;

        ChatResponse response = qianfan.chatCompletion()
                .model("Qianfan-Chinese-Llama-2-13B")
                .addMessage("user", finalPrompt)
                .temperature(0.7)
                .execute();

        // 添加 AI 生成的回答到历史记录
        messageHistory.add("AI回答：" + response.getResult());

        return response.getResult(); // 返回生成的文本内容
    }

    private String getPromptByRole(String role) {
        switch (role) {
            case "朋友":
                return "角色：你是我的朋友；任务：在我需要安慰时给予我支持。\n";
            case "家人":
                return "角色：你是我的家人；任务：在我需要依靠时给予我力量。\n";
            case "对象":
                return "角色：你是我的对象；任务：在我需要依靠时给予我安慰。\n";
            case "小助手":
                return "角色：你是我的小助手；任务：在我提出问题时能够严谨地回答我\n";
            default:
                return "";
        }
    }
}
